package cn.kuporo.seckill.activity.application.service;

import cn.kuporo.seckill.activity.domain.model.vo.ActivitySaveReqVO;
import cn.kuporo.seckill.activity.domain.model.SeckillActivity;
import cn.kuporo.seckill.common.model.dto.SeckillActivityDTO;
import cn.kuporo.seckill.common.model.response.Response;
import cn.kuporo.seckill.common.model.vo.FindActivityBySARspVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author: kuporo
 * @since: 2025/7/7
 * @description:
 */
public interface SeckillActivityService {
    /**
     * 保存活动信息
     */
    Response<?> saveSeckillActivity(ActivitySaveReqVO activitySaveReqVO);

    /**
     * 根据状态获取活动列表
     */
    List<SeckillActivity> getSeckillActivityList(Integer status);

    /**
     * 根据时间和状态获取活动列表
     */
    List<SeckillActivity> getSeckillActivityListBetweenStartTimeAndEndTime(LocalDateTime currentTime, Integer status);

    /**
     * 根据id获取活动信息
     */
    SeckillActivity getSeckillActivityById(Long id);

    /**
     * 修改活动状态
     * @param id 活动id
     * @param status 活动状态
     */
    Response<?> updateStatus(Long id, Integer status);

    /**
     * 根据状态和版本号获取活动列表
     */
    List<FindActivityBySARspVO> getSeckillActivityList(Integer status, Long version);

    /**
     * 根据活动id和版本号获取活动列表 带缓存
     */
    SeckillActivityDTO getSeckillActivityById(Long id, Long version);


}
